#自定义序列化器类
#文件名和自定义类名可根据需求自定义

from rest_framework import serializers

class HeroSerialzier(serializers.Serializer):
    hname = serializers.CharField()
    hgender = serializers.IntegerField()
    hcomment = serializers.CharField()
    hbook = serializers.StringRelatedField(read_only=True)

class BookSerialzier(serializers.Serializer):
    #指定序列化返回的字段  根据模型类指定，也可根据业务需求指定。序列化器的字段类型和模型类的字段类型是一样的
    id=serializers.IntegerField()
    btitle=serializers.CharField()
    bpub_date=serializers.DateField()
    bread=serializers.IntegerField()
    bcomment=serializers.IntegerField()
    #表示前端嵌套返回英雄信息的字段，图书是主表，英雄是副表
    #返回数据有三种形式；
    # 第一种返回对应的id值 PrimaryKeyRelatedField会将英雄ID值返回 ----->返回id
    #一本图书对应多个英雄信息，所以在进行结果返回是需要加上many参数
    # heroinfo_set=serializers.PrimaryKeyRelatedField(read_only=True,many=True)

    #第二种返回数据形式：StringRelatedField ------>返回英雄名称
    # 返回关联表的__str__方法的数据内容
    # heroinfo_set=serializers.StringRelatedField(many=True)

    #第三种返回数据形式：
    # 单独定义关联表,根据定义的序列化器字段返回

    heroinfo_set=HeroSerialzier(many=True)

